Revision: kernel-package--devel--9.0--patch-54
Archive: srivasta@debian.org--etch
Creator: Manoj Srivastava <srivasta@debian.org>
Date: Wed Nov  2 16:17:08 CST 2005
Standard-date: 2005-11-02 22:17:08 GMT
New-files: kernel/po/.arch-ids/=id
    kernel/ruleset/.arch-ids/ChangeLog.id
    kernel/ruleset/.arch-ids/minimal.mk.id
    kernel/ruleset/.arch-ids/modules.mk.id
    kernel/ruleset/ChangeLog
    kernel/ruleset/arches/.arch-ids/=id
    kernel/ruleset/arches/.arch-ids/ChangeLog.id
    kernel/ruleset/arches/.arch-ids/README.txt.id
    kernel/ruleset/arches/.arch-ids/alpha.mk.id
    kernel/ruleset/arches/.arch-ids/amd64.mk.id
    kernel/ruleset/arches/.arch-ids/hppa.mk.id
    kernel/ruleset/arches/.arch-ids/i386.mk.id
    kernel/ruleset/arches/.arch-ids/ia64.mk.id
    kernel/ruleset/arches/.arch-ids/m32r.mk.id
    kernel/ruleset/arches/.arch-ids/m68k.mk.id
    kernel/ruleset/arches/.arch-ids/mips.mk.id
    kernel/ruleset/arches/.arch-ids/mipsel.mk.id
    kernel/ruleset/arches/.arch-ids/ppc.mk.id
    kernel/ruleset/arches/.arch-ids/ppc64.mk.id
    kernel/ruleset/arches/.arch-ids/s390.mk.id
    kernel/ruleset/arches/.arch-ids/sparc.mk.id
    kernel/ruleset/arches/.arch-ids/uml.mk.id
    kernel/ruleset/arches/.arch-ids/xen.mk.id
    kernel/ruleset/arches/ChangeLog
    kernel/ruleset/arches/README.txt
    kernel/ruleset/arches/alpha.mk
    kernel/ruleset/arches/amd64.mk
    kernel/ruleset/arches/hppa.mk
    kernel/ruleset/arches/i386.mk
    kernel/ruleset/arches/ia64.mk
    kernel/ruleset/arches/m32r.mk
    kernel/ruleset/arches/m68k.mk
    kernel/ruleset/arches/mips.mk
    kernel/ruleset/arches/mipsel.mk
    kernel/ruleset/arches/ppc.mk
    kernel/ruleset/arches/ppc64.mk
    kernel/ruleset/arches/s390.mk
    kernel/ruleset/arches/sparc.mk
    kernel/ruleset/arches/uml.mk
    kernel/ruleset/arches/xen.mk
    kernel/ruleset/common/.arch-ids/ChangeLog.id
    kernel/ruleset/common/.arch-ids/README.id
    kernel/ruleset/common/.arch-ids/debconf.mk.id
    kernel/ruleset/common/.arch-ids/install_cmds.mk.id
    kernel/ruleset/common/.arch-ids/pkgvars.mk.id
    kernel/ruleset/common/ChangeLog
    kernel/ruleset/common/README
    kernel/ruleset/common/debconf.mk
    kernel/ruleset/common/install_cmds.mk
    kernel/ruleset/common/pkgvars.mk
    kernel/ruleset/minimal.mk
    kernel/ruleset/misc/.arch-ids/=id
    kernel/ruleset/misc/.arch-ids/ChangeLog.id
    kernel/ruleset/misc/.arch-ids/README.id
    kernel/ruleset/misc/.arch-ids/checks.mk.id
    kernel/ruleset/misc/.arch-ids/config.mk.id
    kernel/ruleset/misc/.arch-ids/defaults.mk.id
    kernel/ruleset/misc/.arch-ids/initrd.mk.id
    kernel/ruleset/misc/.arch-ids/modules.mk.id
    kernel/ruleset/misc/.arch-ids/patches.mk.id
    kernel/ruleset/misc/.arch-ids/pkg_names.mk.id
    kernel/ruleset/misc/.arch-ids/version_vars.mk.id
    kernel/ruleset/misc/ChangeLog
    kernel/ruleset/misc/README
    kernel/ruleset/misc/checks.mk
    kernel/ruleset/misc/config.mk
    kernel/ruleset/misc/defaults.mk
    kernel/ruleset/misc/initrd.mk
    kernel/ruleset/misc/modules.mk
    kernel/ruleset/misc/patches.mk
    kernel/ruleset/misc/pkg_names.mk
    kernel/ruleset/misc/version_vars.mk
    kernel/ruleset/modules.mk
    kernel/ruleset/targets/.arch-ids/=id
    kernel/ruleset/targets/.arch-ids/ChangeLog.id
    kernel/ruleset/targets/.arch-ids/README.id
    kernel/ruleset/targets/.arch-ids/doc.mk.id
    kernel/ruleset/targets/.arch-ids/headers.mk.id
    kernel/ruleset/targets/.arch-ids/image.mk.id
    kernel/ruleset/targets/.arch-ids/manual.mk.id
    kernel/ruleset/targets/.arch-ids/sanity_check.mk.id
    kernel/ruleset/targets/.arch-ids/source.mk.id
    kernel/ruleset/targets/.arch-ids/target.mk.id
    kernel/ruleset/targets/ChangeLog
    kernel/ruleset/targets/README
    kernel/ruleset/targets/doc.mk
    kernel/ruleset/targets/headers.mk
    kernel/ruleset/targets/image.mk
    kernel/ruleset/targets/manual.mk
    kernel/ruleset/targets/sanity_check.mk
    kernel/ruleset/targets/source.mk
    kernel/ruleset/targets/target.mk
    kernel/scripts/.arch-ids/ChangeLog.id
    kernel/scripts/ChangeLog
New-directories: kernel/po kernel/po/.arch-ids
    kernel/ruleset/arches kernel/ruleset/arches/.arch-ids
    kernel/ruleset/misc kernel/ruleset/misc/.arch-ids
    kernel/ruleset/targets kernel/ruleset/targets/.arch-ids
Modified-files: ChangeLog Makefile kernel/ChangeLog
    kernel/Control kernel/rules
    kernel/ruleset/architecture.mk
    kernel/ruleset/common/archvars.mk
    kernel/ruleset/common/targets.mk
    kernel/ruleset/kernel_version.mk
    kernel/ruleset/local-vars.mk kernel/ruleset/local.mk
    kernel/scripts/kpkg-vercheck make-kpkg
New-patches: srivasta@debian.org--etch/kernel-package--devel--9.0--patch-54
Summary: New reorganization of the build mechanism
Keywords: 

	This is a major reorganization of the rules file that helps
 create kernel related packages. The crusty old mechanism has been
 removed, the targets are now streamlined, and the policy mandated
 dependencies are now called out into a separate file. This should allow
 a future enhancement to allow end users to override the behavior of
 kernel-package in a fine grained fashion. Also, separating out the
 variable setting for each arch into a separate file should facilitate
 the delegation of that file to the person responsible for kernel images
 for that architecture. And, separating out the policy mandated targets
 into fine grained double colon targets allows people to add in any
 additional make targets for a particular architecture, something long
 requested. 

	One of the factors that made the build mechanism so complex was
 that the rules file had a dual purpose: Initially, when ./debian was not
 present or not populated, it was responsible for populating that, and
 then it was responsible for building the kernel packages, incorporating
 any user customizations.

	Unfortunately, since Make reads all the commands at startup, it
 was difficult to incorporate any customizations, but the modularization
 of the rules file makes it possible to have two top level files, a
 minimal make file whose sole responsibility is to populate ./debian (and
 run clean even when ./debian does not exist), and which uses some of the
 same variable setting make snippets that the final top level Make file
 uses when it resides in ./debian. The task of deciding which top level
 makefile to use has now been relegated to /usr/bin/make-kpkg -- which,
 if there ./debian is empty or not present, first calls the minimal
 Makefile to populate it, and _then_ calls the real ./debian/rules file
 to perform the actual task that it was asked. This little intelligence
 in make-kpkg allows the minimal makefile, and ./debian/rules, to be far
 simpler, and allows them to conform to the standards my other Debian
 packages adhere to.

	The goal of this release was to handle the bugs in the previous
 experimental release, but to create a set of packages indistinguishable
 from the ones created before. Pointedly, non-of the minor lacunae in the
 Debian kernel image postinst scripts have been addressed yet. Also, the
 build process is a little more verbose at the moment than it needs to be.

* Makefile (DOCFILES): Removed package specific readme files (which
  really do not belong in kernel-package documentation, and added new
  docs that had been neglected.

* kernel/Control (Build-Depends): Added build dependencies on po-debconf
  and gettext, in preparation for the forthcoming debconfication of the
  kernel packages.

* kernel/Control (Recommends): Add recommendations for  po-debconf and
  gettext in the source package.

* kernel/Control (Pre-Depends): Made the imagfe package pre-depend on
  debconf, since the preinst shall be using debconf to ask questions.

* kernel/rules: Continued the process of skeletonizing the top level
  Makefile. Moved some more variables into their own files, and also
  moved the top level policy mandated targets into a separate file (so
  one does  not have to worry about proper dependency relations between
  those targets).

* kernel/ruleset/architecture.mk: Converted this file into an
  skeleton/outline, to better allow delegation of responsibility for each
  architecture to the person in charge of kernel images for that arch.

* kernel/ruleset/arches/README.txt: New file. Describes what the files in
  this directory do.

* kernel/ruleset/arches/alpha.mk: New file to handle the architecture
  specific variables.

* kernel/ruleset/arches/amd64.mk: New file to handle the architecture
  specific variables. 

* kernel/ruleset/arches/hppa.mk: New file to handle the architecture
  specific variables. 

* kernel/ruleset/arches/i386.mk: New file to handle the architecture
  specific variables. 

* kernel/ruleset/arches/ia64.mk: New file to handle the architecture
  specific variables. 

* kernel/ruleset/arches/m32r.mk: New file to handle the architecture
  specific variables. 

* kernel/ruleset/arches/m68k.mk: New file to handle the architecture
  specific variables. 

* kernel/ruleset/arches/mips.mk: New file to handle the architecture
  specific variables. 

* kernel/ruleset/arches/mipsel.mk: New file to handle the architecture
  specific variables. 

* kernel/ruleset/arches/ppc.mk: New file to handle the architecture
  specific variables. 

* kernel/ruleset/arches/ppc64.mk: New file to handle the architecture
  specific variables. 

* kernel/ruleset/arches/s390.mk: New file to handle the architecture
  specific variables. 

* kernel/ruleset/arches/sparc.mk: New file to handle the architecture
  specific variables. 

* kernel/ruleset/arches/uml.mk: New file to handle the architecture
  specific variables. 

* kernel/ruleset/arches/xen.mk: New file to handle the architecture
  specific variables. 

* kernel/ruleset/common/archvars.mk (REASON): Changed the wording for
  non-file targets.

* kernel/ruleset/common/targets.mk: Made all the targets verbose. This is
  likely to be a temporary measure, but who knows.

* kernel/ruleset/local-vars.mk: Made this file a skeleton/outline as
  well. All actual variable settings (apart from the stuff to clean) are
  now done in separate files (which allows us to have a minimal.mk in the
  first place).

* kernel/ruleset/local.mk: This is yet another of the files that has been
  reduced to an outline. Apart from the buildpackage target, every thing
  else has been moved out to file in the targets subdirectory (the top
  level targets were already moved to common/targets)

* kernel/scripts/kpkg-vercheck (main): Emit a warning if called with an
  empty argument.

* make-kpkg (main): Create an alternate command (including an alternate
  rules file, the minimal one) in case ./debian has not yet been
  populated. This means that the default rules file for the main command
  is always fixed to be ./debian/rules, and we now just check
  /usr/share/kernel-package/rules for existence. If ./debian is not
  populated, the alternate command is built up, according to the
  following logic: if the target is clean or debian, we just set the
  alternate command accordingly. If the target is anything else, then the
  alternate command is set to be debian -- so that ./debian is properly
  populated first. So, id ./debian is not populated, and the command is
  clean or debian, just the alternate command is run. If the target was
  anything else (with an UN-populated ./debian), then first the alternate
  command is run to populate ./debian, then the normal command is run
  using the newly created ./debian.

* kernel/ruleset/common/debconf.mk: New file, in preparation for the
  forthcoming debconfication.

* kernel/ruleset/common/install_cmds.mk: New file, pulling these out of
  the local-vars file.

* kernel/ruleset/common/pkgvars.mk: New file. This is what allows us to
  separate out the top level targets, by determining which packages need
  to be built.

* kernel/ruleset/common/README: Describes what this directory is used for.

* kernel/ruleset/minimal.mk: New file. This is the new top level file used when
  ./debian is not populated yet. The major tasks for this file is to run
  the clean target (which does not populate ./debian, indeed, can remove
  it if present), and to populate ./debian, if more complex tasks are to
  be performed. The population of ./debian requires that certain
  variables be set, and this file ensures we use the same makefile
  snippets that ./debian/rules shall use when actually performing the
  tasks, so there is no mismatch.

* kernel/ruleset/misc/checks.mk: Various checks that would let the build
  process detect and abort on various error conditions.

* kernel/ruleset/misc/config.mk: Various internal variable set based on
  defaults and the user configuration files, or from environment vars.

* kernel/ruleset/misc/defaults.mk: This file sets default values for
  variables _before_ the user configuration files are read.

* kernel/ruleset/misc/initrd.mk: This snippet uses hard coded version based
  heuristics to determine which set of tools would be viable for providing
  an initrd or initramdisk for the kernel being built, if initrd's are
  selected by the user as desired.

* kernel/ruleset/misc/modules.mk: This file deals with setting up
  variables, looking at directories, and creating a list of valid third
  party modules available for the kernel being built.

* kernel/ruleset/misc/patches.mk: This file deals with setting up
  variables, looking at directories, and creating a list of valid third
  party patches available for the kernel being built.

* kernel/ruleset/misc/pkg_names.mk: This file sets up package names for
  the packages we can build (based on kernel version), the locations
  under ./debian where these packages shall be built, and the
  corresponding relative directory paths 

* kernel/ruleset/misc/version_vars.mk: This file looks at the top level
  kernel Makefile, and extracts the components of the version string. It
  uses the kernel Makefile itself, so it takes into account everything
  the kernel Makefile itrself pays attention to. This file also
  calculated the obsolete Debian specific Flavour variable.

* kernel/ruleset/modules.mk: This file contains the targets responsible
  for third party module interaction.

* kernel/ruleset/targets/doc.mk: This file is responsible for creating
  the kernel-doc packages 

* kernel/ruleset/targets/headers.mk: This file is responsible for
  creating the kernel-headers packages  

* kernel/ruleset/targets/image.mk: This file is responsible for creating
  the kernel-image packages  

* kernel/ruleset/targets/manual.mk: This file is responsible for creating
  the kernel-manual packages  

* kernel/ruleset/targets/sanity_check.mk: This contains a sanity check
  that must be passed before creating a kernel package 

* kernel/ruleset/targets/source.mk: This file is responsible forcreating
  the kernel-source packages  

* kernel/ruleset/targets/target.mk: This file provides the commands
  commaon to a number of packages built, and also includes the files
  providing commands to build each of the packages we create. 
